package tugas.akhir.jason;

import java.io.IOException;
import java.util.List;
import java.util.Locale;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import tugas.akhir.jason.MyPositionOverlay;
import tugas.akhir.jason.R;

import android.content.Context;
import android.location.Address;
import android.location.Criteria;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.widget.TextView;

public class mapper extends MapActivity{
	@Override
	  protected boolean isRouteDisplayed() {
	    return false;
	  }
		  
	  MapController mapController;
	  MyPositionOverlay positionOverlay;
	  Button next_button1;
	  
	  @Override
	  public void onCreate(Bundle savedInstanceState) {
		    super.onCreate(savedInstanceState);
		    setContentView(R.layout.mapper);
		    
		next_button1 = (Button) findViewById(R.id.next_button1);
	        
	    next_button1.setOnClickListener(new View.OnClickListener() {
	    		public void onClick(View view)
	    		{ startActivity(new Intent(mapper.this, dr00_jenisbangunan.class)); }
	    		
	    		});
		    
	    MapView myMapView = (MapView)findViewById(R.id.myMapView);
	    mapController = myMapView.getController();
	    
	    
	    myMapView.setBuiltInZoomControls(true);
	    myMapView.setSatellite(true);
	    myMapView.setStreetView(true);
	    myMapView.displayZoomControls(true);

	    mapController.setZoom(17);

	    // Add the MyPositionOverlay
	    positionOverlay = new MyPositionOverlay();
	    List<Overlay> overlays = myMapView.getOverlays();
	    overlays.add(positionOverlay);

	    LocationManager locationManager;
	    String context = Context.LOCATION_SERVICE;
	    locationManager = (LocationManager)getSystemService(context);

	    Criteria criteria = new Criteria();
	    criteria.setAccuracy(Criteria.ACCURACY_FINE);
	    criteria.setAltitudeRequired(false);
	    criteria.setBearingRequired(false);
	    criteria.setCostAllowed(true);
	    criteria.setPowerRequirement(Criteria.POWER_LOW);
	    String provider = locationManager.getBestProvider(criteria, true);

	    Location location = locationManager.getLastKnownLocation(provider);

	    updateWithNewLocation(location);

	    locationManager.requestLocationUpdates(provider, 2000, 10,   
	                                           locationListener);
	  }
	  
	  private final LocationListener locationListener = new LocationListener() {
	    public void onLocationChanged(Location location) {
	      updateWithNewLocation(location);
	    }
		 
	    public void onProviderDisabled(String provider){
	      updateWithNewLocation(null);
	    }

	    public void onProviderEnabled(String provider){ }
	    public void onStatusChanged(String provider, int status, 
	                                Bundle extras){ }
	  };

	  private void updateWithNewLocation(Location location) {
	    String latLongString;
	    TextView myLocationText;
	    myLocationText = (TextView)findViewById(R.id.myLocationText);
	    String addressString = "No address found";

		if (location != null) {
	         // Update my location marker
	        positionOverlay.setLocation(location);

	      // Update the map location.
	      Double geoLat = location.getLatitude()*1E6;
	      Double geoLng = location.getLongitude()*1E6;
	      GeoPoint point = new GeoPoint(geoLat.intValue(), 
	                                    geoLng.intValue());

	      mapController.animateTo(point);

	      double lat = location.getLatitude();
	      double lng = location.getLongitude();
	      latLongString = "Latitude:" + lat + "\nLongitude:" + lng;
	      
	      variabelstatis.latitude = "" + lat;
	      variabelstatis.longitude = "" + lng;
	      
	      double latitude = location.getLatitude();
	      double longitude = location.getLongitude();

	      Geocoder gc = new Geocoder(this, Locale.getDefault());
	      try {
	        List<Address> addresses = gc.getFromLocation(latitude, 
	                                                     longitude, 1);
	        StringBuilder sb = new StringBuilder();
	        if (addresses.size() > 0) {
	          Address address = addresses.get(0);

	          for (int i = 0; i < address.getMaxAddressLineIndex(); i++)
	            sb.append(address.getAddressLine(i)).append("\n");
	            sb.append(address.getCountryName());
	        }
	        addressString = sb.toString();
	      } catch (IOException e) {}
	    } else {
	      latLongString = "Lokasi tidak ditemukan";
	    }
	    myLocationText.setText("Posisi anda saat ini:\n" + 
	                            latLongString + "\n" + addressString);
	  }
	}
	
	
	
	   
